package au.com.acpfg.misc.uniprot; import java.util.List; import javax.swing.JFileChooser; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.knime.core.node.defaultnodesettings.DefaultNodeSettingsPane; import org.knime.core.node.defaultnodesettings.DialogComponentBoolean; import org.knime.core.node.defaultnodesettings.DialogComponentColumnNameSelection; import org.knime.core.node.defaultnodesettings.DialogComponentFileChooser; import org.knime.core.node.defaultnodesettings.DialogComponentNumber; import org.knime.core.node.defaultnodesettings.DialogComponentString; import org.knime.core.node.defaultnodesettings.DialogComponentStringListSelection; import org.knime.core.node.defaultnodesettings.DialogComponentStringSelection; import org.knime.core.node.defaultnodesettings.SettingsModelBoolean; import org.knime.core.node.defaultnodesettings.SettingsModelIntegerBounded; import org.knime.core.node.defaultnodesettings.SettingsModelString; import org.knime.core.data.StringValue; /** * <code>NodeDialog</code> for the UniProt Node: which accesses the XML records * maintained by www.uniprot.org * * This node dialog derives from {@link DefaultNodeSettingsPane} which allows * creation of a simple dialog with standard components. If you need a more * complex dialog please derive directly from * {@link org.knime.core.node.NodeDialogPane}. * * @author Andrew Cassin */ public class UniProtAccessorNodeDialog extends DefaultNodeSettingsPane { private final static String UNIREF_TASK = "Retrieve UniRef Entries"; protected UniProtAccessorNodeDialog() { super(); final SettingsModelString task = UniProtAccessorNodeModel.make_as_string(UniProtAccessorNodeModel.CFGKEY_TASK); final SettingsModelString uniref = UniProtAccessorNodeModel.make_as_string(UniProtAccessorNodeModel.CFGKEY_UNIREF); final SettingsModelString from_db = UniProtAccessorNodeModel.make_as_string(UniProtAccessorNodeModel.CFGKEY_FROM_ACCSN); final SettingsModelString to_db = UniProtAccessorNodeModel.make_as_string(UniProtAccessorNodeModel.CFGKEY_TO_ACCSN); uniref.setEnabled(task.getStringValue().equals(UNIREF_TASK)); task.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent arg0) { uniref.setEnabled(task.getStringValue().equals(UNIREF_TASK)); from_db.setEnabled(task.getStringValue().startsWith("Map")); to_db.setEnabled(task.getStringValue().startsWith("Map")); } }); addDialogComponent(new DialogComponentStringSelection(task, "Task to perform:", new String[] {"Retrieve UniProt Entries", "Retrieve UniRef Entries", "Retrieve UniPARC Entries", "Map Accessions" })); addDialogComponent(new DialogComponentBoolean(new SettingsModelBoolean(UniProtAccessorNodeModel.CFGKEY_WANTXML, false), "include XML in results?")); addDialogComponent(new DialogComponentColumnNameSelection(UniProtAccessorNodeModel.make_as_string(UniProtAccessorNodeModel.CFGKEY_ACCSN_COL), "Accessions from column:", 0, true, false, StringValue.class)); addDialogComponent(new DialogComponentStringSelection(uniref, "UniRef Database", new String[] {"UniRef100", "UniRef90", "UniRef50"})); this.createNewGroup("Accession Mapping:"); List<String> from_dbs = AccessionMapTask.get_db_list(true); List<String> to_dbs = AccessionMapTask.get_db_list(false); addDialogComponent(new DialogComponentStringSelection(from_db, "From:", from_dbs.toArray(new String[0]))); addDialogComponent(new DialogComponentStringSelection(to_db, "To:", to_dbs.toArray(new String[0]))); createNewTab("Results Cache"); final SettingsModelBoolean use_cache = (SettingsModelBoolean)UniProtAccessorNodeModel.make(UniProtAccessorNodeModel.CFGKEY_CACHE); final SettingsModelIntegerBounded cache_freshness = (SettingsModelIntegerBounded) UniProtAccessorNodeModel.make(UniProtAccessorNodeModel.CFGKEY_CACHE_FRESHNESS); final SettingsModelString cache_filename = UniProtAccessorNodeModel.make_as_string(UniProtAccessorNodeModel.CFGKEY_CACHE_FILENAME); use_cache.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent arg0) { boolean yes = use_cache.getBooleanValue(); cache_freshness.setEnabled(yes); cache_filename.setEnabled(yes); } }); addDialogComponent(new DialogComponentBoolean(use_cache, "Cache results locally?")); addDialogComponent(new DialogComponentNumber(cache_freshness, "Re-fetch cached results older than ... days", new Integer(30))); addDialogComponent(new DialogComponentFileChooser(cache_filename, "cache-file-history", JFileChooser.OPEN_DIALOG, false)); } }